import RB from '../index'
import ArrayList from '../useAl'
import LinkedList from '../useSl'
import Avl from '../useAvl'
import { time } from '@/utils/performance'
import { randomArr } from '@/sources/Sort/util'

export const test = () => {
    const rb = new RB();
    const al = new ArrayList();
    const avl = new Avl();
    const ll = new LinkedList();
    const arr = randomArr(0, 100000, 99900),
          arr2 = arr.slice(),
          arr3 = arr.slice(),
          arr4 = arr.slice();

    time('红黑树', () => {
        arr.forEach(ele => {
            rb.add(ele)
        })
    })

    time('动态数组', () => {
        arr.forEach(ele => {
            al.add(ele)
        })
    })

    time('平衡二叉树', () => {
        arr.forEach(ele => {
            avl.add(ele)
        })
    })

    time('链表', () => {
        arr.forEach(ele => {
            ll.add(ele)
        })
    })

    // print(rb)
    // print(al)
    // print(avl)
    // print(ll)

    // console.log('===========================')

    // time('红黑树', () => {
    //     arr.forEach(ele => {
    //         rb.remove(ele)
    //     })
    // })

    // time('动态数组', () => {
    //     arr2.forEach(ele => {
    //         al.remove(ele)
    //     })
    // })

    // time('平衡二叉树', () => {
    //     arr3.forEach(ele => {
    //         avl.remove(ele)
    //     })
    // })

    // time('链表', () => {
    //     arr4.forEach(ele => {
    //         ll.remove(ele)
    //     })
    // })

    // print(rb)
    // print(al)
    // print(avl)
    // print(ll)

}

/**
 * 打印
 * @param set 
 */
const print = (set: any) => {
    let str = ''
    set.forEach((ele: any) => {
        str += ele + ' '
    })
    console.log(str)
}